/*
 * Copyright 2015 MongoDB, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package io.github.dunwu.springboot.data.db.mongo;

import org.bson.Document;
import org.junit.Test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;

import static java.util.Arrays.asList;

// @imports: start
// @imports: end

public class InsertPrimer extends PrimerTestCase {

    @Test
    public void insertADocument() throws ParseException {

        // @begin: insert-a-document
        // @code: start
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH);
        db.getCollection("restaurants")
          .insertOne(
              new Document("address",
                  new Document().append("street", "2 Avenue").append("zipcode", "10075")
                                .append("building", "1480").append("coord", asList(-73.9557413, 40.7720266)))
                  .append("borough", "Manhattan").append(
                  "cuisine", "Italian")
                  .append("grades", asList(new Document()
                          .append("date", format.parse("2014-10-01T00:00:00Z"))
                          .append("grade", "A").append("score", 11),
                      new Document()
                          .append("date", format.parse("2014-01-16T00:00:00Z"))
                          .append("grade", "B").append("score", 17)))
                  .append("name", "Vella").append("restaurant_id", "41704620"));
        // @code: end

        // @post: The method does not return a result.
        // @end: insert-a-document
    }

}
